As grid environments become more popular, the size and the diversity in terms of resources and jobs are increasing as well. By their nature, individual resources are not under central control and they can enter and leave the grid system at any time. Similarly, job arrivals and job mix are much less predictable than in a dedicated parallel or cluster environment. The existing resource-matching and resource-allocation mechanisms used in grid environments are extensions of the mechanisms that were initially developed for parallel and cluster type of systems which are characterized by centralized control over resources and workload. These mechanisms do not work well in grid environments because they do not scale well with the size of the grid. In addition, because these mechanisms are designed assuming centralized control, when they are used in grid environments, either the grid resources are required to be monitored and controlled in a synchronized manner or the decisions made by the resource-matching mechanisms tend to be inefficient and/or inaccurate. Thus, the existing resource matching mechanisms either curb the flexibility offered by grid environments or they operate inefficiently.
In most cases, the resources considered are of only of one type, e.g., processors, and these are typically homogeneous. Moreover, for performance reasons, resource sharing is not taken into account. Various resource-scheduling schemes have considered the problem of mapping jobs to heterogeneous computing systems. However, these schemes only consider one type of resource and they do not take into consideration simultaneous resource sharing by multiple jobs. Other schemes have proposed modeling methods and algorithms to solve the resource-matching problem. However, these schemes only focus on finding optimal resources for one job with complex resource co-selection requirements.
Therefore a need exists to overcome the problems with the prior art as discussed above.